35 research outputs found
C-Sim, un simulador de manejo de memoria de C/C++
La materia de Programación es parte de la formación
obligatoria para alcanzar el grado en IngenierÃa
Informática. En la Escuela Superior de IngenierÃa
Informática de la Universidad de Vigo, se ha apostado
por una enseñanza más tradicional (imperative-first),
de la programación: frente a la estrategia de empezar
directamente con programación orientada a objetos,
llamada objects first. Inicialmente se realiza una
primera parte (la asignatura Programación I), en C++
(sin utilizar clases y objetos), y a continuación, en
Programación II, se explora el paradigma orientado a
objetos con el mismo lenguaje. Esto hace que los
estudiantes se enfrenten a conceptos, como el de
manejo de la memoria, a un nivel de abstracción más
cercano a la máquina. AsÃ, deben comprender
conceptos como punteros, bloques de memoria,
liberación de memoria... etc. C-Sim nace como una
herramienta de ayuda a la docencia, con la que el
profesor puede poner fácilmente ejemplos en clase, y
con la que los estudiantes pueden experimentar en
horas no presenciales.SUMMARY -- The subject of Programming is part of the mandatory
formation for undergraduate students of Computer
Science Engineering. At the Escuela Superior de
IngenierÃa Informática of the University of Vigo, we
have taken the path of dividing this formation in two
actual subjects: Programación I, for procedural
programming, and Programación II, focused in
object-oriented programming. In contrast to the
strategy called objects first, we still use a imperative
first approach. Both subjects use the same vehicular
programming language: C++. This forces students to
understand programming concepts, such as memory
management, from a quite low abstraction level:
pointers, memory blocks, memory release, etc. C-Sim
was created as an assistance tool for the lecturer to be
able to create examples in the classroom, while the
students can experiment with the tool in their own
Pooi, un intérprete de un lenguaje orientado a objetos basado en prototipos para la educación
En cursos avanzados del grado en IngenierÃa
Informática, es interesante explorar otras opciones al
margen del tÃpico modelo de programación orientado
a objetos basado en clases. El modelo basado en
prototipos es de hecho muy interesante, pues llega a
ser capaz de representar el modelo basado en clases.
Sin embargo, no es sencillo encontrar lenguajes
basados en prototipos que permitan que el estudiante
interaccione con ellos de una manera sencilla y
didáctica. Fruto de este problema nace Pooi
(Prototype-based Object-Oriented Interpreter), un
pequeño intérprete de objetos cuyo fin último es el de
servir de ejemplo sencillo del funcionamiento interno
de estos lenguajes, asà como de ser una herramienta
con la que los alumnos puedan experimentar en su
tiempo no presencial.SUMMARY -- In advanced courses of the Computer Science
Engineering is interesting to explore other options
apart from the typical object-oriented programming
model, based on classes. The prototype-based model
is indeed interesting, since is able to represent the
class-based one. However, it is not easy to find
prototype-based languages that are simple for the
student to interact with, in a didactic way. Pooi
(Prototype-based Object-Oriented Interpreter), was
developed as a way to cover this need, to be a tool
suitable for demonstrations of the internal workings
for this kind of programming languages, as well as
for the students to experiment on their own
An Efficient Platform for the Automatic Extraction of Patterns in Native Code
Different software tools, such as decompilers, code quality analyzers, recognizers of packed executable files, authorship analyzers, and malware detectors, search for patterns in binary code. The use of machine learning algorithms, trained with programs taken from the huge number of applications in the existing open source code repositories, allows finding patterns not detected with the manual approach. To this end, we have created a versatile platform for the automatic extraction of patterns from native code, capable of processing big binary files. Its implementation has been parallelized, providing important runtime performance benefits for multicore architectures. Compared to the single-processor execution, the average performance improvement obtained with the best configuration is 3.5 factors over the maximum theoretical gain of 4 factors
Utilización de patrones de diseño en la asignatura de Procesadores de Lenguaje
La asignatura de Procesadores de Lenguaje
comprende el aprendizaje de una teorÃa formal y
el desarrollo práctico de un procesador de
lenguaje. La fase de análisis semántico es
comúnmente descrita mediante el uso de
formalismos tales como gramáticas atribuidas.
En este artÃculo presentamos cómo hemos
utilizado patrones de diseño para la enseñanza
teórica de sistemas de tipos y el desarrollo
práctico del analizador semántico de un
compilador. Nuestro enfoque facilita la
comprensión de conceptos teóricos gracias a que
la notación utilizada (UML) es conocida por los
estudiantes. Adicionalmente, los diseños son
aplicados en el desarrollo práctico de un
procesador de lenguaje, reforzando
competencias propias de IngenierÃa del
Software.Peer Reviewe
Framework for the declarative implementation of native mobile applications
The development of connected mobile applications for a broad audience is a complex task because of the existing device diversity. In order to soothe this situation, device-independent approaches are aimed at implementing platform-independent applications, hiding the differences among the diverse families and models of mobile devices. Most of the existing approaches are based on the imperative definition of applications, which are either compiled to a native application, or executed in a Web browser. The client and server sides of applications are implemented separately, using different mechanisms for data synchronisation. In this study, the authors propose device-independent mobile application generation (DIMAG), a framework for defining native device-independent client-server applications based on the declarative specification of application workflow, state and data synchronisation, user interface and data queries. The authors have designed DIMAG considering the dynamic addition of new types of devices, and facilitating the generation of applications for new target platforms. DIMAG has been implemented taking advantage of existing standard
Design patterns for teaching type checking in a compiler construction course
A course in compiler construction seeks to develop an understanding of well-defined fundamental theory and typically involves the production of a language processor. In a graduate degree in software engineering, the development of a compiler contributes significantly to the developer's comprehension of the practical application of theoretical concepts. Different formal notations are commonly used to define type systems, and some of them are used to teach the semantic analysis phase of language processing. In the traditional approach, attribute grammars are probably the most widely used ones. This paper shows how object-oriented design patterns represented in unified modeling language (UML) can be used to both teach type systems and develop the semantic analysis phase of a compiler. The main benefit of this approach is two-fold: better comprehension of theoretical concepts because of the use of notations known by the students (UML diagrams), and improvement of software engineering skills for the development of a complete language processor
C-Sim, un simulador de manejo de memoria de C/C++
La materia de Programación es parte de la formación obligatoria para alcanzar el grado en IngenierÃa Informática. En la Escuela Superior de IngenierÃa Informática de la Universidad de Vigo, se ha apostado por una enseñanza más tradicional (imperative-first), de la programación: frente a la estrategia de empezar directamente con programación orientada a objetos, llamada objects first. Inicialmente se realiza una primera parte (la asignatura Programación I), en C++ (sin utilizar clases y objetos), y a continuación, en Programación II, se explora el paradigma orientado a objetos con el mismo lenguaje. Esto hace que los estudiantes se enfrenten a conceptos, como el de manejo de la memoria, a un nivel de abstracción más cercano a la máquina. AsÃ, deben comprender conceptos como punteros, bloques de memoria, liberación de memoria... etc. C-Sim nace como una herramienta de ayuda a la docencia, con la que el profesor puede poner fácilmente ejemplos en clase, y con la que los estudiantes pueden experimentar en horas no presenciales.The subject of Programming is part of the mandatory formation for undergraduate students of Computer Science Engineering. At the Escuela Superior de IngenierÃa Informática of the University of Vigo, we have taken the path of dividing this formation in two actual subjects: Programación I, for procedural programming, and Programación II, focused in object-oriented programming. In contrast to the strategy called objects first, we still use a imperative first approach. Both subjects use the same vehicular programming language: C++. This forces students to understand programming concepts, such as memory management, from a quite low abstraction level: pointers, memory blocks, memory release, etc. C-Sim was created as an assistance tool for the lecturer to be able to create examples in the classroom, while the students can experiment with the tool in their own
Pooi, un intérprete de un lenguaje orientado a objetos basado en prototipos para la educación
En cursos avanzados del grado en IngenierÃa Informática, es interesante explorar otras opciones al margen del tÃpico modelo de programación orientado a objetos basado en clases. El modelo basado en prototipos es de hecho muy interesante, pues llega a ser capaz de representar el modelo basado en clases. Sin embargo, no es sencillo encontrar lenguajes basados en prototipos que permitan que el estudiante interaccione con ellos de una manera sencilla y didáctica. Fruto de este problema nace Pooi (Prototype-based Object-Oriented Interpreter), un pequeño intérprete de objetos cuyo fin último es el de servir de ejemplo sencillo del funcionamiento interno de estos lenguajes, asà como de ser una herramienta con la que los alumnos puedan experimentar en su tiempo no presencial.In advanced courses of the Computer Science Engineering is interesting to explore other options apart from the typical object-oriented programming model, based on classes. The prototype-based model is indeed interesting, since is able to represent the class-based one. However, it is not easy to find prototype-based languages that are simple for the student to interact with, in a didactic way. Pooi (Prototype-based Object-Oriented Interpreter), was developed as a way to cover this need, to be a tool suitable for demonstrations of the internal workings for this kind of programming languages, as well as for the students to experiment on their own
Utilización de patrones de diseño en la asignatura de Procesadores de Lenguaje
La asignatura de Procesadores de Lenguaje comprende el aprendizaje de una teorÃa formal y el desarrollo práctico de un procesador de lenguaje. La fase de análisis semántico es comúnmente descrita mediante el uso de formalismos tales como gramáticas atribuidas. En este artÃculo presentamos cómo hemos utilizado patrones de diseño para la enseñanza teórica de sistemas de tipos y el desarrollo práctico del analizador semántico de un compilador. Nuestro enfoque facilita la comprensión de conceptos teóricos gracias a que la notación utilizada (UML) es conocida por los estudiantes. Adicionalmente, los diseños son aplicados en el desarrollo práctico de un procesador de lenguaje, reforzando competencias propias de IngenierÃa del Software